package Array;

/**
 * toCharArray将字符串转化为字符数组处理
 * 法1：从前向后双指针，将慢指针初始位置设为-1【最小位置也只能是-1，用来表示多个删除符号将文本全部删除】
 *      经过双指针遍历整个字符串后获得删除后的字符串，若两个慢指针都指向-1，表示都删除完，返回true
 *      如果慢指针指向的下标不一样，说明两个字符串长度不一样，返回false
 *      依次比较剩下情况的字符串的对应位置，如有不同返回false，都相同返回true
 */
public class p844 {
    class Solution {
        public boolean backspaceCompare(String s, String t) {
            char[] charS = s.toCharArray();
            char[] charT = t.toCharArray();

            int s_fastIndex;
            int s_slowIndex = -1;
            for(s_fastIndex = 0; s_fastIndex < s.length(); s_fastIndex++){
                if(charS[s_fastIndex] != '#'){
                    s_slowIndex++;
                    charS[s_slowIndex] = charS[s_fastIndex];
                } else if(s_slowIndex >= 0){
                    s_slowIndex--;
                }
            }

            int t_fastIndex;
            int t_slowIndex = -1;
            for(t_fastIndex = 0; t_fastIndex < t.length(); t_fastIndex++){
                if(charT[t_fastIndex] != '#'){
                    t_slowIndex++;
                    charT[t_slowIndex] = charT[t_fastIndex];
                } else if(t_slowIndex >= 0){
                    t_slowIndex--;
                }
            }

            if(s_slowIndex < 0 && t_slowIndex < 0){
                return true;
            }

            if (s_slowIndex != t_slowIndex){
                return false;
            }

            for(int i = 0; i <= t_slowIndex; i++){
                if(charS[i] != charT[i]){
                    return false;
                }
            }

            return true;
        }
    }
}
